/*************************************************************************
	> File Name: dasserver.h
	> Author: xuwenlong
	> Mail: myxuan475@126.com 
	> Created Time: 2018年09月17日 星期一 14时00分10秒
 ************************************************************************/

#ifndef __DASCLIENT_H__
#define __DASCLIENT_H__
#include <event.h>
#include <vector>
#include <utils/shared_ptr.h>
#include <transport/remote/client/sclient.h>
#include <transport/remote/server/server.h>
#include <utils/timer.h>

using namespace std;

class DasClient:public Sclient,public TimerTask
{
public:
    DasClient();
    virtual ~DasClient();

    virtual void RunTimer();

    virtual void OnStatus(bool connect);

    virtual BOOL OnReceiveJson(
            S32 index,
            DAS_RESULT status,
            const string &method, const Json::Value &result);

    virtual void TimeoutEvent();

private:
    typedef  struct{
        int    success;
        bool   status;
        time_t last_status;//状态文件最后修改时间，采集相关
        time_t last_data;//数据文件最后上传时间
        S64    leftdata;//数据剩余字节数
    }FileStruct;

    void reportError();
    int fileList(map<int, FileStruct> &filelist);
    int fileId(const char* filename);
private:
    Timer *m_pTimer;
    int    m_iwait;

    Lock   m_uploadlock;
    string m_filename;
    int   m_seek;
    int    m_uploadlen;
};

#endif
